import axios from 'axios'
import Vue from 'vue'
import store from '../../store/store.js'
// loading效果
import { Toast } from 'vant'
import router from '../router/index.js'
Vue.use(Toast)

const request = axios.create({
  baseURL: 'http://www.liulongbin.top:8000'

})
let loadingInstance = null
request.interceptors.request.use(config => {
  loadingInstance = Toast.loading({
    message: '加载中...', // 文本内容
    duration: 2000, // 展示时长(ms)，值为 0 时，toast 不会消失
    forbidClick: true
  })
  // console.log(config)
  const tokenStr = store.state.tokenInfo.token
  if (tokenStr) {
    // 3. 添加身份认证字段
    config.headers.Authorization = `Bearer ${tokenStr}`
  }
  return config
}, error => {
  return Promise.reject(error)
})
request.interceptors.response.use(response => {
  loadingInstance.close()
  return response
},
error => {
  loadingInstance.close()
  // 如果有响应的结果，并且响应的状态码是 401，则证明 Token 过期了
  if (error.response && error.response.state === 401) {
    console.log('token过期了')
    Toast.loading({
      message: 'token过期啦',
      duration: 2000, // 展示时长(ms)，值为 0 时，toast 不会消失
      forbidClick: true
    })

    // TODO1：清空 vuex 和 localStorage 中的数据
    store.commit('clearToken')
    // TODO2：强制跳转到登录页，并通过路由的 query 查询参数，把当前用户访问未遂的路由地址带给登录页
    router.replace('/login?pre=' + router.currentRoute.fullPath)
  }
  return Promise.reject(error)
}

)

export default request
